Check sanity of toplevel sizes
authorMatthias Clasen <mclasen@redhat.com>
Fri, 7 Aug 2020 16:45:19 +0000 (12:45 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 7 Aug 2020 16:45:19 +0000 (12:45 -0400)
Emit a warning when sizes returned in GdkToplevelSize
don't look sane. This is the case in the failing
reftest.

gdk/gdktoplevel.c
gdk/gdktoplevelsize.c
gdk/gdktoplevelsizeprivate.h

index 3b8a22a611e6b89501aad895e536f9df95515b70..a7802a35046b00defc7c11ac1d5dc88be0998e4f 100644 (file)
@@ -99,6 +99,7 @@ gdk_toplevel_notify_compute_size (GdkToplevel     *toplevel,
                                   GdkToplevelSize *size)
 {
   g_signal_emit (toplevel, signals[COMPUTE_SIZE], 0, size);
+  gdk_toplevel_size_validate (size);
 }
 
 static void
index 18933523ff5fca7beeb8d4bbd05b8fcaf08cacd9..276e63f9514fdccd541b24c28fca989cf7b181e0 100644 (file)
@@ -117,3 +117,19 @@ gdk_toplevel_size_set_min_size (GdkToplevelSize *size,
   size->min_width = min_width;
   size->min_height = min_height;
 }
+
+void
+gdk_toplevel_size_validate (GdkToplevelSize *size)
+{
+  if (size->min_width > size->bounds_width ||
+      size->min_height > size->bounds_height)
+    g_warning ("GdkToplevelSize: min_size exceeds bounds");
+
+  if (size->width > size->bounds_width ||
+      size->height > size->bounds_height)
+    g_warning ("GdkToplevelSize: size exceeds bounds");
+
+  if (size->min_width > size->width ||
+      size->min_height > size->height)
+    g_warning ("GdkToplevelSize: min_size exceeds size");
+}
index eaddefba0b9f13c0fcd8a68c663ca75a7082cea9..35765138883bde1094f469016ec6fa9adbf77ef5 100644 (file)
@@ -36,4 +36,6 @@ void gdk_toplevel_size_init (GdkToplevelSize *size,
                              int              bounds_width,
                              int              bounds_height);
 
+void gdk_toplevel_size_validate (GdkToplevelSize *size);
+
 #endif /* __GDK_TOPLEVEL_SIZE_PRIVATE_H__ */